#ifndef DRAWING_IDRAWER_H
#define DRAWING_IDRAWER_H

#include "Common/Algebra/Vec2.h"
#include "Common/Algebra/Transform.h"
#include "Common/Geometry/Circle.h"
#include "Common/Geometry/Polygon.h"

#include "Drawing/Pen.h"
#include "Drawing/Brush.h"
#include "Drawing/Model/Model.h"

namespace drawing {

	class IDrawer
	{
	public:
		virtual ~IDrawer() {}

		virtual Pen GetPen() const = 0;
		virtual void SetPen( const Pen& pen ) = 0;

		virtual Brush GetBrush() const = 0;
		virtual void SetBrush( const Brush& brush ) = 0;

		virtual void DrawPoint( const cmn::Vec2& point ) = 0;
		virtual void DrawLine( const cmn::Vec2& start, const cmn::Vec2& end ) = 0;

		virtual void DrawCircle( const cmn::Circle& circle ) = 0;
		virtual void DrawPolygon( const cmn::Polygon& polygon ) = 0;

		virtual void DrawModel( const cmn::Transform& position, const Model* model ) = 0;
	};
}

#endif
